As should be appreciated, a virtual machine (‘VM’) is a software construct or the like operating on a computing device or the like (i.e., a ‘host’) for the purpose of emulating a hardware system. Typically, although not necessarily, the VM is an application or the like, and may be employed on the host to instantiate a use application or the like while at the same time isolating such use application from such host device or from other applications on such host. In one typical situation, the host can accommodate a plurality of deployed VMs, each VM performing some predetermined function by way of resources available from the host. Notably, each VM is for all intents and purposes a computing machine, although in virtual form, and thus represents itself as such both to the use application thereof and to the outside world.
Typically, although not necessarily, a host deploys each VM thereof in a separate partition. Such host may include a virtualization layer with a VM monitor or the like that acts as an overseer application or ‘hypervisor’, where the virtualization layer oversees and/or otherwise manages supervisory aspects of each VM of the host, and acts as a possible link between each VM and the outside world.
One hallmark of a VM is that the VM as a virtual construct can be halted and re-started at will, and also that the VM upon being halted can be stored and retrieved in the manner of a file or the like. In particular, the VM as instantiated on a particular computing device is a singular software construct that can be neatly packaged inasmuch as the software construct includes all data relating to such VM, including operating data and state information relating to the VM. As a result, a VM on a first host can be moved or ‘migrated’ to a second host by halting the VM at the first host, moving the halted VM to the second host, and re-starting the moved VM at the second host, or the like. More generally, a VM can be migrated from a first platform to a second platform in a similar manner, where the platforms represent different hosts, different configurations of the same host, or the like. In the latter case, and as should be appreciated, a computing device may have a different configuration if, for example, additional memory is added, a processor is changed, an additional input device is provided, a selection device is removed, etc.
In a similar manner, a library of VMs may be maintained, where each VM in the library is a halted and stored VM that is available to be retrieved and re-started upon appropriate command. Thus, and as one example, a user or the like in need of a particular processing scenario can peruse the library for an appropriate VM therein that addresses the scenario and upon finding such a VM can retrieve and re-start the VM. In a similar manner, a user or the like that has deployed a VM can at any appropriate point halt the VM and store the halted VM to the library for later retrieval, at which time the stored VM upon being retrieved from the library can be re-started to continue processing.
It should be understood that the VM includes an operating system, one or more use applications, and other various software constructs (i.e., ‘software constructs’, collectively), and that each software construct of the VM may from time to time require an update in the form of a patch or the like. As may be appreciated, such an update may be performed for any of several reasons, including to keep the construct current, to provide the construct with additional functionality, to address security issues with regard to the construct, or the like. Generally, the construct may include update functionality that periodically queries an update source for any new patches, and if available the update functionality obtains the new patches and installs same, perhaps with the aid and/or approval of a user or the like.
Notably, a VM that is halted and stored in a library or the like cannot perform any processing, and thus the update functionality of a construct of such a halted and stored VM is not able to obtain and install patches as may be appropriate. As may be appreciated, the inability of a construct to be updated while the VM thereof is halted and stored may be a minor inconvenience if the nature of the update is relatively insignificant, or may be a major issue if the nature of the update is relatively important. In the former case, an update that may be relatively insignificant could for example be an update that provides additional display features. In the latter case, an update that may be relatively important could for example be an update that addresses a security issue.
Especially with regard to an update that is relatively important, it may not be acceptable to wait to apply the update to a VM until some indeterminate time when the VM may be retrieved from the library and re-started in the normal manner. Accordingly, a need exists for a system and method directed toward allowing any updates and especially any important updates to be applied to a VM in a library.